import {
	hasToken,
	setToken,
	getToken
} from '@/utils/usertoken.js'

import {
	isWeChatMiniProgram
} from '@/utils/platform.js'

import {
	loginRequest
} from '@/request/login.js'

import {
	parseJwt,
	checkJwtExp 
} from '@/utils/jwt.js'


export const wxJsCodeLogin = () => {

	return new Promise((resolve, reject) => {
		//判断是否微信小程序
		if(!isWeChatMiniProgram())
		{
			reject("仅支持微信小程序登录")
			return;
		}
		//已登录  1 获取code 去登录
		var loginType = 0;
		if (hasToken()) {
		
		    let token=getToken()
		    //解析jwt
		    let isExp=checkJwtExp(token);
            if(!isExp)
			{
				resolve(loginType)
				return;
			}
			setToken('');
			
			
		} 
		//获取openid
		uni.login({
			// 可选：明确指定微信登录（多端项目推荐）
			provider: 'weixin',
			success: (res) => {
				// ✅ 登录成功
				if (res.code) {
					console.log('获取 code 成功:', res.code)
					loginRequest({
						"code": res.code
					}).then((res) => {
						if (res.code == 0) {
							setToken(res.data);
							loginType = 1;
							resolve(loginType) // 失败
						} else {
							reject(res.message) // 失败

						}
						console.log('成功', res.message);
					}).catch((err) => {
						console.error('失败', err);
					});


				} else {
					reject(res.message) // 失败
				}
			},

			fail: (err) => {
				// 用户拒绝授权或网络错误
				console.error('uni.login 失败:', err)

				if (err.errMsg === 'login:fail cancel') {
					reject('您取消了授权') // 失败

				} else {
					reject('登录失败，请重试') // 失败

				}
			}
		})
	});

}

//无赖只能把这玩意透出来
export default wxJsCodeLogin